#pragma once

#include <vector>
#include <string>
#include "../core/InputGLFW.h"
POCELAIN_NAMESPACE_USING

class ApplicationBase
{
public:
    ApplicationBase(int argc,char **argv);
    virtual ~ApplicationBase();
    virtual void init();
    virtual int run();
    virtual void versionSelect();
    virtual void onResize(int width, int height);
    virtual void render(double elapse) = 0;
    static void printOpenGLInfo();
protected:
    std::vector<std::string> mArgvs;
    GLFWwindow *mWindow;
    InputGLFW *mInput;
    int mGLMajorVersion;
    int mGLMinorVersion;
    Vector2 mWindowSize;
};
